ГРАФИКА
В Visual Basic есть 3 основных способа использовать графику. Рассмотрим по очереди все 3 способа.
1 способ - загрузка в Visual Basic готовых изображений.
Придать объекту картинку можно, установив его свойство Picture:
• в режиме проектирования - вручную;
• в режиме работы - использовав функцию LoadPicture.
Например:
Form1 .Picture = LoadPicture("C:\user\1.bmp")
Здесь в скобках в кавычках пишем адрес файла,с картинкой на диске.
Если у вас в проекте несколько объектов, имеющих свойство Picture, то картинку можно мгновенно "скопировать" с одного объекта на другой так:
lmage4.Picture = Form1 .Picture
Если вы хотите удалить картинку с объекта:
• в режиме проектирования вы должны буквально стереть значение свойства Picture из окна свойств;
• в режиме работы вы должны написать оператор такого вида:
Form1.Picture = LoadPicture(" ")
Типы графических файлов
Visual Basic 6.0 поддерживает (воспринимает и работает с ними) графические файлы следующих типов;
|
Расширения файлов |
Краткое описание |
|
.BMP, .DIB |
Фотографии и любые другие растровые изображения |
|
.ICO |
Значки (пиктограммы, иконки) - очень маленькие |
|
.CUR |
Значки курсоров -очень маленькие |
|
.WMF, .EMF |
Метафайлы Windows - векторные изображения |
|
.GIF |
Растровые изображения, применяются в Интернете |
|
.JPG, .JPEG |
Растровые изображения (часто пониженного качества, зато экономные), применяются в Интернете |
Регулировка размеров изображений: Рассмотрим, как размещаются и умещаются ли картинки в объектах нашего проекта.
Элемент управления PictureBox. Он специально предназначен для размещения картинок. У него есть, например, свойство AutoSize,
которое, если установить его в True, заставляет PictureBox в режиме работы подстраивать свои размеры под размеры картинки.
Элемент управления Image.
Он тоже специально предназначен для размещения картинок. Проверьте, установлено ли его свойство Strech в False,
и убедитесь, что по отношению ко всем видам графики объект Image в режиме работы подстраивает свои размеры под размеры картинки.
В чем же тогда его отличие? Вот в чем. Установите свойство Strech в True, это заставит уже картинку в режиме работы подстраивать
свои размеры под размеры Image, а не наоборот. Выходит, что свойство Strech - переключатель того, что подо что "прогнется" - Image
под картинку или картинка под Image.
А теперь самостоятельно испытайте кнопку CommandButton. Но перед испытанием обязательно придайте ее свойству Style
значение Graphical, иначе никаких картинок на кнопке не будет видно. Кроме свойства Picture, у кнопки есть ещё,
например, такое свойство - DownPicture. Оно определяет другую картинку, а именно ту, которую мы видим, нажав кнопку
и не отпуская ее.
2 способ. Объекты LINE и SHAPE.
Возьмем в Toolbox
объект
Shape (фигура) и проведем наискосок мышкой по форме. На
форме разместится прямоугольник. Он может
превратиться в квадрат, овал (эллипс), круг, может закруглить углы,
все это в зависимости от значения его свойства
Shape
(да-да, одинако
вые названия у объекта и его свойства). Поэкспериментируйте со сле
дующими свойствами фигуры:
•
|
Свойство |
Смысл |
|
BorderWidth |
Толщина линии |
|
BorderColor |
Цвет линии |
|
BorderStyle |
Стиль линии (сплошная, штриховая и т. п.). Предварительно сделайте толщину равной единице |
Сейчас
пространство внутри фигуры прозрачное. Предположим, вы хотите, чтобы
пространство внутри фигуры было
не прозрачным, а залито краской или заполнено узором. Прозрачностью управляет свойство BackStyle, а цветом -
свойство BackColor.
Взаимное перекрытие объектов. Метод ZOrder.
Мы можем перемещать объекты в пределах своего слоя ближе или дальше от глаз:
• В режиме проектирования - выделить интересующий нас объект ->Format->Order-> далее нужно выбрать
одну из двух команд: Bring to Front (перенести на передний план) или Send to Back (отослать на задний план).
• В режиме работы - использовать метод ZOrder. Так, чтобы перенести на передний план текстовое поле, мы пишем оператор
Textl .ZOrder (0)
а чтобы отослать его на задний план -Textl .ZOrder (1)
Цвет в Visual Basic
Как до сих пор мы придавали цвет какому-нибудь элементу Visual Basic?
• В режиме проектирования мы устанавливали соответствующее свойство в окне свойств. Для этого в закладке Palette выбирали один из нескольких десятков цветов.
• В режиме работы пользовались операторами типа Forml.BackColor= vbRed. Имеется всего 8 цветов, представленных этим способом:
|
vbBlack |
. Черный |
|
vbRed |
Красный |
|
vbGreen |
Зеленый |
|
vbYellow |
Желтый |
|
vbBlue |
Синий |
|
vbMagenta |
Фиолетовый (неточный перевод) |
|
vbCyari |
Голубой (неточный перевод) |
|
vbWhite |
Белый |
Но в Visual Basic существует 16 млн. цветов с лишним (точнее, 16777216)! Мы должны научиться ими управлять. Есть несколько способов.
Так, цвет можно указывать просто числом от 0 до 16777215. Например,
Form1.BackColor= 12456743
Также любую краску можно получить, смешав, в определенной пропорции красную (Red), зеленую (Green) и синюю (Blue) краски.
В Visual Basic каждой краски в смесь можно положить от 0 до 255 единиц. Смешивает краски специальная функция RGB
(название - по первым буквам цветов). Пусть мы хотим покрасить форму краской, в которую мы положили 100 единиц красной,
200 единиц зеленой и 50 единиц синей краски. Для этого пишем такой оператор:
Form1.BackColor = RGB(100, 200, 50)
Чем меньше каждой краски мы положим, тем темнее будет цвет, чем больше - тем светлее.
3 способ - рисуем при помощи графических методов
Методами для рисования различных геометрических фигур обладают 2 объекта: форма и PictureBox.
Пример:
Напишем программу, которая рисует на форме точку, прямоугольник, окружность и отрезок прямой.
Private Sub Command1_Click()
PSet (1000, 2000) ' точка
Line (2000,1000)-(5000, 3000) 'отрезок прямой
Line (3000, 3000)-(1000,4000),, В 'прямоугольник
Circle (4000, 2000), 1000
'окружность
End Sub •
Пояснения. Числа на картинке обозначают горизонтальную и вертикальную координаты на форме (в твипах).
Вы видите, что методы записаны без указания объекта, которому они принадлежат. В этом случае считается, что по умолчанию они принадлежат форме. Если бы вы записали Picture1.Line, то рисование происходило бы на поверхности PictureBox.
Точка рисуется методом PSet. Два числа в скобках - координаты точки на форме, первое число - горизонтальная координата, второе число - вертикальная.
Будем называть величины, указанные в методе - параметрами метода.
Отрезок прямой
рисуется методом
Line.
Мы знаем, что
отрезок прямой можно построить, если известно положение двух его крайних
точек. Они-то и задаются в обращении к методу. Первая пара параметров —
координаты одной точки (любой из двух), вторая пара — другой.
.
Если дана пара точек, то между ними можно провести не только отрезок прямой, но и прямоугольник. Для этого достаточно в методе Line указать букву В после двух запятых.
Окружность можно построить, если известно положение центра и радиус. Окружность рисуется методом
Circle, первые 2 параметра которого - координаты центра, 3-й - радиус.
Фигуры, изображенные методами вашей программы, нарисованы тонкими черными сплошными линиями
без заливки внутренних областей. Есть 3 способа управлять толщиной, цветом и другими атрибутами фигур.
Для этого , которые вы можете применять поодиночке или вперемешку:
1. В режиме проектирования настроить соответствующие свойства объекта. Эти свойства воздействуют сразу на все методы.
2. В режиме работы в нужные моменты изменять эти свойства (этот способ бьет предыдущий, то есть в случае конфликта пересиливает его настройки).
3. В самом методе можно задавать многие атрибуты рисуемой фигуры (этот способ бьет остальные).
Свойства объектов, влияющие на графические методы
|
Свойство |
Смысл |
|
DrawWidth |
Толщина линии |
|
ForeColor |
Цвет линии |
|
DrawStyle |
Стиль линии (сплошная, штриховая и т. п.). Предварительно сделайте толщину равной единице |
|
FillStyle |
Стиль (узор) заливки и будет ли заливка |
|
FttiColor |
Цвет заливки |
|
AutoRedraw |
Определяет, будут ли автоматически восстанавливаться графика и напечатанный текст, случайно стертые из-за того, что объект скрылся из виду |
|
DrawMode |
Способ наложения краски. По умолчанию значение равно 13 (Сору Реп), когда краска плотно накладывается и предыдущая картинка через нее не просвечивает. При других значениях новая краска меняет свой цвет или, сложно взаимодействует со старой и иногда получается любопытный и полезный результат |
Почти всегда там, где допустимы числа, допустимы и выражения.
Например: PSet (2*х+100, у-1), RGB(21+a, 10, 30)+ 10
Если задать их в цикле, то точка нарисует линию (например параболу).
Метод CIs просто стирает все нарисованное и напечатанное. (Создать эффект движения.)
Как заставить Visual Basic короткой программой рисовать множество элементов, сплетая их в красивые узоры?
Ответ: применять циклы, используя в обращениях к графическим методам вместо чисел переменные величины и арифметические выражения.
Пример:
. Нарисовать горизонтальный ряд окружностей радиусом 100 на расстоянии 1000 от верхнего края экрана и с
такими горизонтальными координатами: 500, 800, 1100, 1400, ..., 2900.
Dim х As Long
Private Sub Command3_Click()
x = 500
Do Until x > 2900
Circle (x, 1000), 100
x = x + 300
Loop
End Sub
Пример:
Написать программу, которая создает эффект мыльных пузырей.
Dim t As Byte
Dim j As Long
Private Sub Command1_Click()
Randomize
For t = 1 To 50
For j = 1 To 10000000: Next
' пустой цикл для замедления появления пузырей
Circle (Rnd * 10000, Rnd * 10000), Rnd * 1000, RGB(Rnd * 1000, Rnd * 1000, Rnd *
1000), b ' центр,
радиус и цвет задаем случайным образом
Next t
End Sub
Если вставить в программу функцию cls, то пузыри будут появляться и исчезать.